{% load static %}
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Python列表</title>
<style>
		html, body {
			height: 100%;
			margin: 0px;
			padding: 0px;
		}

		.div-a{ float:left;width:50%;height:100%;border:1px solid #F00;overflow-y:scroll}
		.div-b{ float:right;width:49%;height:100%;border:0px solid #000}


        div#butt	{
            height:50px;
            border-bottom: 0px solid #c5c5c5;
            background:#fff;
            }

        div#butt input {
            margin:10px 0 0 10px;
            background:blueviolet;
            color:#fff;
            width:150px;
            height:30px;
            font:14px Verdana, Arial, Helvetica, sans-serif;
            }

        form{

            height:45%;
            width:100%;
            margin-left:0px;
			border:0px solid #c5c5c5;
            }
		#CodeArea{
			height:100%;
            width:100%;
            margin-left:0px;
		}
        #TestCode{
            height:85%;
			width:99%;
            overflow:auto;
            border:1px solid #c5c5c5;
            font:14px "Courier New", Courier, monospace;
            }
        #CodeArea h2	{
            margin:10px 0 6px 5px;
            color:brown;
            font-size:14px;
            }

        #result	{
            height:48%;
            width:100%;
			margin-left:0px;
			border:0px solid red;
            }
		#output{
            width:99%;
            height:85%;
            overflow:auto;
            border:1px solid #c5c5c5;
            font:14px "Courier New", Courier, monospace;
            }

        #result h2	{
            margin:10px 0 6px 5px;
            color:brown;
            font-size:14px;
            }

</style>
<script src="{% static "common/jquery-1.8.2.js" %}" type="text/javascript"></script>
</head>
<body>
<div class="div-a">
    <li data-role="list-divider" data-theme="b">Python列表</li>
  <div id="" class="ui-body ui-body-a">
    <p>列表（list）是Python中最常用的数据类型之一，有以下特点：<br/>
  1、任意对象的有序集合；<br/>
  2、过偏移存取，注意，列表中的元素都是可变的，这是不同于元组的；<br/>
  3、可变，支持嵌套；
    </p><br/>
    <h3>创建列表</h3>
    <p>
        列表常用方括号表示，即：[]；<br/>
创建一个列表，只要把用逗号分隔的不同的数据项再使用方括号括起来即可。<br/>
示例：<br/>
>>> ls=['a','b','c','1','2']<br/>
>>> ls<br/>
>>>['a','b','c','1','2']<br/>
空列表表示为ls=[]<br/>
列表中的元素既可以是数字，字符串也可以是列表等其他数据类型。<br/>
示例：<br/>
>>> a=[1,2,3]<br/>
>>> b=[1,2,a,4]<br/>
>>> b<br/>
[1, 2, [1, 2, 3], 4]<br/>
b列表中的第3个元素就是a列表。<br/>
     </p>
    <h3>访问列表中的元素</h3>
    <p>
        列表中每个元素的位置被称为索引，可以通过索引来访问列表中的元素，要注意索引是从0开始，即列表中第一个元素的索引为0。
示例：<br/>
>>> L1=[1,2,3,5,0,1]<br/>
>>> L1[0]<br/>
1<br/>
>>> L1[1]<br/>
2<br/>
最后一个元素的索引除了可以按顺序计算得到的外，还可以用-1表示：<br/>
>>> L1[-1]<br/>
1<br/>
同理，倒数第二个为-2<br/>
>>> L1[-2]<br/>
0<br/>
注意索引不能超过范围，否则程序会报错：<br/>
>>> L1[6]<br/>
Traceback (most recent call last):<br/>
  File "<stdin>", line 1, in <module><br/>
IndexError: list index out of range<br/>
     </p>

    <h3>切片</h3>
    <p>
        除了可以访问某一个元素，Python还提供切片方法可以提取列表中的部分元素。<br/>
示例：<br/>
>>> L=[1,2,3,4,5,6,7]<br/>
>>> L[0:4]<br/>
[1, 2, 3, 4]<br/>
注意：[0:4]表示取列表中索引为0、1、2、3的4个元素，不包括最后的4。<br/>
>>> L[:]<br/>
[1, 2, 3, 4, 5, 6, 7]<br/>
[:]冒号前后都没有数字表示提取列表全部元素。<br/>
>>> L[2:]<br/>
[3, 4, 5, 6, 7]<br/>
因此，[2:]表示提取第3个元素到最后一个元素。<br/>
>>> L[-2:]<br/>
[6, 7]<br/>
[-2:]表示提取列表后两个元素。<br/>
>>> L[::2]<br/>
[1, 3, 5, 7]<br/>
[::2]表示对全部元素每两个取1个。
同理，字符串也可以通过索引来访问某一位置的元素或切片。<br/>
示例：<br/>
>>> str='I like you'<br/>
>>> str[0]<br/>
'I'<br/>
>>> str[0:5]<br/>
'I lik'<br/>
     </p>

      <h3>列表中常用函数</h3>
    <p>
        len(list)：返回列表元素个数<br/>
示例：<br/>
>>> L1=[1,2,3]<br/>
>>> len(L1)<br/>
3<br/>
max(list)：返回列表元素最大值<br/>
示例：<br/>
>>> L1=[1,2,3]<br/>
>>> max(L1)<br/>
3<br/>
min(list)：返回列表元素最小值<br/>
示例：<br/>
>>> L1=[1,2,3]<br/>
>>> min(L1)<br/>
1<br/>

     </p>
      <h3>列表中常用的方法</h3>
      <p>
          list.append(obj)：在列表的末尾添加新的对象<br/>
示例：<br/>
>>> L1=[1,2,3]<br/>
>>> L1.append(4)<br/>
>>> L1<br/>
[1, 2, 3, 4]<br/>
list.count(obj)：统计某个元素在列表中出现的次数<br/>
示例：<br/>
>>> L1=[1,2,3,3]<br/>
>>> L1.count(3)<br/>
2<br/>
list.extend(list)：在列表末尾添加包含多个值的另一个序列，有扩展列表的作用<br/>
示例：<br/>
>>> L1=[1,2,3]<br/>
>>> L2=[2,3,4]<br/>
>>> L1.extend(L2)<br/>
>>> L1<br/>
[1, 2, 3, 2, 3, 4]<br/>
list.insert(index,obj)：将对象插入列表中的第index元素之前<br/>
示例：<br/>
>>> L1=[1,2,3]<br/>
>>> L1.insert(2,8)<br/>
>>> L1<br/>
[1, 2, 8, 3]<br/>
list.pop()：移除列表中的一个元素（默认最后一个元素），并且返回该元素的值<br/>
示例：<br/>
>>> L1=[1,2,3,4]<br/>
>>> L1.pop()<br/>
4<br/>
>>> L1<br/>
[1, 2, 3]<br/>
也可以删除指定元素，参数为要删除元素在列表中的索引：<br/>
示例：<br/>
>>> L1.pop(1)<br/>
2<br/>
>>> L1<br/>
[1, 3]<br/>
list.remove(obj)：移除列表中某个值，参数为元素的值<br/>
示例：<br/>
>>> L1=[1,2,3,4]<br/>
>>> L1.remove(1)<br/>
>>> L1<br/>
[2, 3, 4]<br/>
list.reverse()：将列表中的元素反向排列<br/>
示例：<br/>
>>> L1=[1,2,3,4]<br/>
>>> L1.reverse()<br/>
>>> L1<br/>
[4, 3, 2, 1]<br/>
list.sort(function())：将列表进行排序<br/>
示例：<br/>
>>> L=[2,0,5,19,2,4]<br/>
>>> L.sort()<br/>
>>> L<br/>
[0, 2, 2, 4, 5, 19]<br/>
      </p>
  </div>

</div>
<div class="div-b">
	<form action="#" method="post" id="tryitform" name="tryitform" onSubmit="validateForm();" target="i" id="form-a">
		<div id="CodeArea">
		<h2>编辑您的代码：</h2>
		<textarea id="TestCode" wrap="logical">
#!/usr/bin/python
# -*- coding: utf-8 -*-
#------------------------
ls=['a','b','c','1','2']
print ls
a=[1,2,3]
b=[1,2,a,4]
print b
#------------------------
L1=[1,2,3,5,0,1]
print L1[0]
print L1[1]
print L1[-1]
print L1[-2]
print L1[6]
#------------------------


		</textarea>
		</div>
		<input type="hidden" id="code" name="code"  />

	</form>
<div id="butt">
		<input type="button" value="提交代码" onClick="submitTryit()" id="submit">
		</div>
	<div id="result">
		<h2>查看结果:</h2>
		<textarea id="output" wrap="logical"></textarea>
	</div>
</div>
<script type="text/javascript">
	function submitTryit()
	{

	    var t=document.getElementById("TestCode").value;

	    document.getElementById("code").value=t;

	    validateForm();
        $.ajax({
         type:"GET",
         url:"/moon/codeHandler",
         data:{"code":t},
         success:function(ret){
            $('#output').html(ret.result)
            }
        })

	}

	function validateForm()
	{
	var code=document.getElementById("code").value;
	if (code.length>5000)
		{
		document.getElementById("code").value="<h1>Error</h1>";
		}
	}
</script>
</body>
</html>
